Saltar al contenido principal

4.2 Tuplas (tuple)

Una tupla es una colección ordenada e inmutable de elementos. A primera vista se parece mucho a una lista, pero con una diferencia fundamental: no se puede modificar después de crearla.

Esto significa que no se pueden añadir, eliminar ni cambiar sus elementos. Por esa razón, las tuplas se utilizan cuando se desea mantener los datos fijos y protegidos contra modificaciones accidentales.

Las tuplas son muy útiles, por ejemplo, para representar coordenadas, fechas, valores devueltos por una función o pares de datos constantes.

Ejemplo de tupla
coordenadas = (40.7128, -74.0060)
print(coordenadas)
en este ejemplo

La variable coordenadas contiene una tupla con dos valores: la latitud y la longitud de Nueva York. Aunque se pueden leer sus elementos, no se pueden cambiar.


1️⃣ Cómo crear una tupla​

🟩 Usando paréntesis ()​

La forma más común es escribir los elementos entre paréntesis y separados por comas.

Creación de tuplas con ()
numeros = (10, 20, 30)
print(numeros)

🟦 Empaquetado implícito​

Python permite omitir los paréntesis si los valores están separados por comas.

Creación de tuplas de manera implícita
colores = "rojo", "verde", "azul"
print(colores)
en este ejemplo

Aunque no haya paréntesis, Python entiende que es una tupla. Esto se llama empaquetado implícito (tuple packing).

🟨 Tupla de un solo elemento​

Este caso tiene una pequeña trampa: Si escribimos solo un valor entre paréntesis, Python no lo interpreta como tupla, sino como el propio valor. Para que sea una tupla, hay que añadir una coma final.

Creación de tuplas con solo un elemento
t1 = (5)
t2 = (5,)
print(type(t1)) # <class 'int'>
print(type(t2)) # <class 'tuple'>
en este ejemplo

La coma es lo que realmente convierte la expresión en una tupla. Los paréntesis ayudan a la legibilidad, pero no son estrictamente necesarios.

🟧 Convertir otras estructuras en tuplas​

Al igual que con las listas, podemos convertir un iterable (como una cadena o una lista) en una tupla usando la función tuple().

Creación de tuplas mediante casting
letras = tuple("Python")
print(letras)

# ('P', 'y', 't', 'h', 'o', 'n')
en este ejemplo

La cadena "Python" se descompone en una tupla donde cada carácter ocupa una posición.

2️⃣ Acceso a los elementos de una tupla​

Las tuplas, como las listas, son ordenadas e indexadas, por lo que se puede acceder a sus elementos mediante el índice.

Acceso mediante índice
dias = ("lunes", "martes", "miércoles")
print(dias[0]) # lunes
print(dias[1]) # martes
en este ejemplo

Los índices comienzan en 0.

índices negativos

También se pueden usar índices negativos para contar desde el final:

print(dias[-1])  # miércoles

3️⃣ Inmutabilidad de las tuplas​

La principal característica de las tuplas es que no se pueden modificar. Cualquier intento de cambiar su contenido produce un error.

Intento de modificación de un elemento de la tupla
numeros = (1, 2, 3)
numeros[0] = 99 # ❌ Error

# TypeError: 'tuple' object does not support item assignment
en este ejemplo

Una vez creada, la tupla queda fija. Si se necesita cambiar algo, debe crearse una nueva tupla a partir de la anterior.


4️⃣ Desempaquetado​

Una de las características más prácticas de las tuplas es que se pueden desempaquetar, es decir, asignar sus valores a varias variables en una sola línea.

info

Todas las técnicas de desempaquetado se pueden emplear también con Listas.

Desempaquetado de tuplas
punto = (4, 5)
x, y = punto
print(f"x = {x}, y = {y}")

# x = 4, y = 5
en este ejemplo

Cada elemento de la tupla se asigna automáticamente a una variable distinta. Esto se conoce como desempaquetado múltiple.

🟩 Desempaquetado con *​

Cuando no se sabe cuántos elementos tendrá la tupla, se puede usar el operador * para agrupar los valores restantes.

Uso del operador '*' para desempaquetar tuplas
valores = (1, 2, 3, 4, 5)
primero, *intermedios, ultimo = valores
print(primero) # 1
print(intermedios) # [2, 3, 4]
print(ultimo) # 5
en este ejemplo

*intermedios agrupa los elementos del medio en una lista. Esto ofrece gran flexibilidad en asignaciones.


5️⃣ Operaciones con tuplas​

Aunque las tuplas son inmutables, sí permiten ciertas operaciones comunes:

OperaciónDescripciónEjemploResultado
len(t)Longitudlen((1,2,3))3
+Concatenar(1,2) + (3,4)(1,2,3,4)
*Repetir(1,2) * 2(1,2,1,2)
inComprobar existencia2 in (1,2,3)True
max(t)Máximomax((5,8,3))8
min(t)Mínimomin((5,8,3))3
sum(t)Suma (si hay números)sum((1,2,3))6
info

Estas funciones integradas no modifican la tupla, crean y devuelven nuevos valores.


6️⃣ Métodos disponibles en las tuplas​

A diferencia de las listas, las tuplas tienen solo dos métodos propios, debido a su inmutabilidad.

MétodoDescripciónEjemploResultado
count(x)Devuelve cuántas veces aparece x.(1,2,2,3).count(2)2
index(x)Devuelve el índice de la primera aparición de x.(1,2,3).index(3)2
info
  • Si x no está en la tupla, index() genera un error (ValueError).
  • El método index() también acepta un segundo parámetro opcional, que indica a partir de que índice empezar a buscar el objeto.

7️⃣ Tuplas anidadas​

Una tupla puede contener otras tuplas dentro, lo que permite representar estructuras más complejas.

Ejemplo de tupla anidada
alumnos = (
("Ana", 8.5),
("Luis", 7.2),
("Marta", 9.0)
)
print(alumnos[0][0]) # Ana
en este ejemplo

alumnos es una tupla de tuplas. Cada subtupla representa un alumno y su nota. Es una forma muy compacta de almacenar datos estructurados sin listas ni diccionarios.


8️⃣ Conversión entre tuplas y listas​

En algunos casos, puede resultar útil convertir una tupla en lista (para modificarla) y luego volver a tupla.

Casting de tupla en lista y viceversa
colores = ("rojo", "verde", "azul")
lista_colores = list(colores) # Conversión a lista
lista_colores.append("amarillo")
nueva_tupla = tuple(lista_colores)
print(nueva_tupla)

# ('rojo', 'verde', 'azul', 'amarillo')
en este ejemplo

Se crea una lista a partir de la tupla, se modifica, y después se convierte de nuevo en tupla. Esto permite actualizar el contenido manteniendo la estructura final inmutable.


📊 Comparación tuplas Vs. listas...​

CaracterísticaTupla (tuple)Lista (list)
EstructuraOrdenadaOrdenada
Mutabilidad❌ Inmutable✅ Mutable
Sintaxis(1, 2, 3)[1, 2, 3]
DuplicadosPermitidosPermitidos
Tipos diferentesSíSí
Métodos disponiblescount(), index()Muchos
Uso habitualDatos constantesDatos cambiantes
VelocidadMás rápidaMás flexible